package 每日一题;

public class No59螺旋矩阵II {

    /**
     * 给你一个正整数 n ，生成一个包含 1 到 n2 所有元素，
     * 且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。
     *
     * 示例 1：
     * 输入：n = 3
     * 输出：[[1,2,3],[8,9,4],[7,6,5]]
     * 示例 2：
     * 输入：n = 1
     * 输出：[[1]]
     *
     * 提示：
     * 1 <= n <= 20
     */

    public int[][] generateMatrix(int n) {
        int left=0;
        int right=n-1;
        int top=0;
        int bottom=n-1;
        int x=0;
        int y=0;

        int[][] result=new int[n][n];
        int index=1;

        while (index<=n*n){

            //向右
            for(;y<=right;y++){
                result[x][y]=index++;
            }
            top++;
            x++;
            y--;//for循环的y++判断后会跳出,跳出后需要纠正

            //向下
            for(;x<=bottom;x++){
                result[x][y]=index++;
            }
            right--;
            y--;
            x--;

            //向左
            for(;y>=left;y--){
                result[x][y]=index++;
            }
            bottom--;
            x--;
            y++;

            //向上
            for(;x>=top;x--){
                result[x][y]=index++;
            }
            left++;
            y++;
            x++;

        }

        return result;
    }

}
